home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 49
/
Amiga Format CD49 (2000-01-17)(Future Publishing)(GB)(Track 1 of 3)[!][issue 2000-02].iso
/
-serious-
/
graphics
/
amicad
/
arexx
/
typeanalyse.amicad
< prev
next >
Wrap
Text File
|
1999-12-06
|
5KB
|
173 lines
/* Choix du type d'analyse Spice */
/* Version 2.00 (Ajout analyse du point de fonctionnement .OP) */
/* $VER: 2.00 (4/10/99) */
options results /* indispensable pour récupérer le résultat des macros */
signal on error /* pour l'interception des erreurs */
signal on syntax
'TITLE("Recherche analyse existante..."):OBJECTS(-1)'
objets=result
objet_analyse=0
analyse=''
do i=1 to objets
'FINDOBJ('i',4,-1,-1)'; i=result
if i>0 then do
'READTEXT('i')'; t=result
if left(t,10)=".ANALYSE: " then do
analyse=substr(t,10)
objet_analyse=i
leave
end
end
else leave
end
if analyse~='' then do
if substr(analyse,1,3)="OP" then do
'REQUEST("L''analyse actuelle"+CHR(10)+"détermine le point"+CHR(10)+"de fonctionnement"+CHR(10)+"du montage"+CHR(10)+"Voulez-vous en changer?")'
if result=1 then analyse=''
else analyse='OP'
end
else if substr(analyse,1,3)="AC" then do
'REQUEST("Le type d''analyse actuel"+CHR(10)+"est le type AC"+CHR(10)+"Voulez-vous en changer?")'
if result=1 then analyse=''
else do
analyse=edition_analyse_AC(analyse)
if analyse='' then exit
end
end
else if substr(analyse,1,3)="DC" then do
'REQUEST("Le type d''analyse actuel"+CHR(10)+"est le type DC"+CHR(10)+"Voulez-vous en changer?")'
if result=1 then analyse=''
else do
analyse=edition_analyse_DC(analyse)
if analyse='' then exit
end
end
else if upper(substr(analyse,1,5))="TRAN" then do
'REQUEST("Le type d''analyse actuel"+CHR(10)+"est le type TRAN"+CHR(10)+"Voulez-vous en changer?")'
if result=1 then analyse=''
else do
analyse=edition_analyse_TRAN(analyse)
if analyse='' then exit
end
end
else do
'MESSAGE("Type d''analyse inconnu")'
exit
end
if analyse~="" then 'SAVEALL(-1):SETTEXT('objet_analyse',".ANALYSE: 'analyse'")'
end
if analyse='' then do
'SELECT("Type d''analyse à effectuer"+CHR(10)+"Point de fonctionnement"+CHR(10)+"AC"+CHR(10)+"DC"+CHR(10)+"Transient")'
select
when result=1 then do
analyse="OP"
end
when result=2 then do
analyse=edition_analyse_AC("AC DEC/OCT/LIN 100 10 1000")
end
when result=3 then do
analyse=edition_analyse_DC("DC V 1V 10V 0.01V")
end
when result=4 then do
analyse=edition_analyse_TRAN("TRAN 0.01s 1s 0s")
end
otherwise
exit
end
if analyse='' then exit
if objet_analyse>0 then 'SAVEALL(-1):SETTEXT('objet_analyse',".ANALYSE: 'analyse'")'
else 'WRITE(".ANALYSE: 'analyse'",0,0):TITLE("Placez ce texte sur le document")'
end
exit
edition_analyse_AC:
parse arg type variation nbre_pts freq_debut freq_fin
if type="AC" then do
'SELECT("Type de variation ('variation')"+CHR(10)+"Décade (DEC)"+CHR(10)+"Octave (OCT)"+CHR(10)+"Linéaire (LIN)")'
select
when result=1 then do
f="DEC "; v="par décade"
end
when result=2 then do
f="OCT "; v="par octave"
end
when result=3 then do
f="LIN "; v="de test"
end
otherwise do
return ''
end
end
'ASKNUM("Nombre de points 'v'?",'nbre_pts')'
if result='' then return ""
else f=f||result
'ASKTEXT("Quelle est la fréquence de début?","'freq_debut'")'
if result='' then return ""
else f=f||" "||result
freq_fin=strip(freq_fin)
'ASKTEXT("Quelle est la fréquence de fin?","'freq_fin'")'
if result='' then return ""
else analyse="AC "||f||' '||result
'MESSAGE("Attention: pour ce type"+CHR(10)+"d''analyse il faut utiliser"+CHR(10)+"un générateur de signal"+CHR(10)+"de valeur AC x")'
return analyse
end
return ''
edition_analyse_DC:
parse arg type source vmin vmax pas
if type='DC' then do
'UNMARK(-1):MESSAGE("Vous devez maintenant"+CHR(10)+"sélectionner une source")'
'PICKOBJ("Sélectionnez le générateur à faire varier.")'
f=result
if f<1 then return ''
'MARK('f'):TYPE('f')'
if result=5 then 'READTEXT('f')'
else 'READTEXT(GETREF('f'))'
f=result
'V0=ASKTEXT("Quelle est la valeur de départ?","'vmin'")'
if result='' then return ''
else f=f||' '||result
'V1=ASKTEXT("Quelle est la valeur finale.","'vmax'")'
if result='' then return ''
else f=f||' '||result
pas=strip(pas)
'ASKTEXT("Quel est l''incrément?","'pas'")'
if result='' then return ''
else analyse="DC "||f||' '||result
return analyse
end
return ''
edition_analyse_TRAN:
parse arg type pas tmax tdebut
if upper(type)='TRAN' then do
'ASKTEXT("Temps de simulation?","'tmax'")'
tmax=strip(result)
if tmax='' then return ''
pas=strip(pas)
'ASKTEXT("Pas de simulation?","'pas'")'
pas=strip(result)
if pas='' then return ''
tdebut=strip(tdebut)
'ASKTEXT("Temps de début de la simulation?","'tdebut'")'
tdebut=strip(result)
if tdebut='' then return ''
analyse="tran "||pas||" "||tmax||" "||tdebut
return analyse
end
return ''
/* Traitement des erreurs, interruption du programme */
syntax:
erreur=RC
'MESSAGE("Erreur de syntaxe"+CHR(10)+"en ligne 'SIGL'"+CHR(10)+"'errortext(erreur)'")'
exit
error:
'MESSAGE("Erreur en ligne 'SIGL'")'
exit